Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

357
Visualizações
¿Por qué es subclase [clase (anónimo)]

Dado el ejemplo a continuación, ¿podría alguien indicar por qué mi clase C se muestra como anónima? Estoy tratando de validar la instancia de BC y siempre es falsa :(

Gracias de antemano.

 class A { constructor() { this.a = 1 } }; class B extends A { constructor() { super(); this.a = 2; } } BC = class extends B { constructor() { super(); this.a = 3; } } console.log(A, B, BC) //[class A], [class B extends A], [class (anonymous) extends B] let test = new BC(); console.log(test instanceof BC) //false console.log(test.constructor.name) //''
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

En la mayoría de las situaciones, al asignar una expresión de class anónima a algo (una variable, una propiedad en un inicializador de objeto, el nombre del parámetro si se usa una expresión de class como valor predeterminado del parámetro, ...) se asigna el nombre del objeto al clase. Ejemplo:

 const A = class {}; console.log(A.name); // "A" const obj = { B: class {}, }; console.log(obj.B.name); // "B" function example(C = class {}) { console.log(C.name); // "C" } example();

Pero hay una excepción específica para cuando agrega una propiedad a un objeto existente . Eso fue considerado un riesgo de seguridad por TC39 (imagínese que está almacenando una clase/función que le va a dar a un código que no es de confianza usando una clave que debe ser privada para su código y no expuesta al de ellos), por lo que es uno de los muy pocos lugares que no sucede:

 const obj = {}; obj.A = class {}; console.log(obj.A.name); // ""

Si desea que BC tenga un nombre, asígnele uno de forma explícita:

 BC = class SomeNameHere extends B { // ...

Lo mismo es cierto para las expresiones de funciones anónimas, consulte mi respuesta aquí para obtener más información al respecto.


En un comentario sobre la respuesta que has dicho:

... Sin embargo, la validación de la instancia aún se muestra como falsa. ¿Alguna sugerencia sobre lo que está causando esto?...

Eso no sucederá con el código de la pregunta, independientemente de si BC tiene un nombre. instanceof funciona bien de cualquier manera:

 class A { constructor() { this.a = 1; } } class B extends A { constructor() { super(); this.a = 2; } } // With a name BC = class BC extends B { constructor() { super(); this.a = 3; } }; // Without a name BD = class extends B { constructor() { super(); this.a = 3; } }; console.log(A, B, BC); // [class A], [class B extends A], [class (anonymous) extends B] let test = new BC(); console.log(test instanceof BC); // true console.log(test.constructor.name); // "BC" let test2 = new BD(); console.log(test2 instanceof BD); // true console.log(test2.constructor.name); // ""
 .as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Su última clase es anónimo, porque nunca le da el nombre C. Simplemente crea una propiedad llamada C que contiene la clase anónimo.

Creo que la sintaxis de lo que espera se vería así:

 ... class C extends B { constructor() { super(); this.a = 3; } } var B = new B(); BC = new C();

De esta manera, está definiendo una nueva clase llamada C y agrega una nueva propiedad también llamada C a B y la llena con una instancia de C.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda